package cn.com.nes.site.service.system.dict;

import cn.com.nes.mybatis.agent.system.entity.TParam;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

/**
 * 字典服务
 *
 * @Author: ShenWei
 * @Date: 2024/03/12/15:45
 */
public interface TParamService extends IService<TParam> {

    /**
     * 根据param_type 和 value 获取字典的名称
     * @param paramType     -- 字典类型id,在字典枚举DictTypeEnum中补充所需要的字典类型
     * @param value         -- 字典值
     * @return
     */
    String getNameByParamTypeAndValue(String paramType,String value);

    /**
     *  查询字典列表
     * @param paramType 字典类型
     * @return
     * @throws Exception
     */
    List<TParam> getList(String paramType) throws Exception;


    /**
     * 字典Map
     *  格式：<value, TParam>
     * @param paramType 字典类型
     * @return
     * @throws Exception
     */
    Map<String, TParam> getMapValueIsKey(String paramType) throws Exception;

    /**
     * list 转 Map， 必须是同一类别的字典
     *  格式：<TParam::value, TParam>
     * @param list 字典列表
     * @return
     * @throws Exception
     */
    Map<String, TParam> convertToMapForSameType(List<TParam> list) throws Exception;

    /**
     * 以list格式获取字典key - value
     * @param paramType
     * @return
     * @throws Exception
     */
    List<Map<String, String>> getListMap(String paramType) throws Exception;

    /**
     * 根据字典类型和名称获取字典值
     * 如果不存在就新增
     * @param paramType 字典类型
     * @param name      字典名称
     */
    String getValueByName(String paramType, String name);
}
